package com.wisely.highlight_spring4.ch3.aware;

import java.io.IOException;

import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service;

/**
 * @author GY
 * 2018年1月30日
 * Spring Aware 的目的是为了让Bean获取Spring容器的服务
 * Spring 提供了很多Aware接口
 * Bean继承了ApplicationContextAware就可以获取Spring容器的所有服务
 * 但是原则上 我们还是用到什么接口，就实现什么接口
 */
//实现BeanNameAware,ResourceLoaderAware接口，获取Bean名称和资源加载的服务
@Service
public class AwareService implements BeanNameAware,ResourceLoaderAware{//1
	
	private String beanName;
	private ResourceLoader loader;
	
	//实现ResourceLoaderAware 需要重写setResourceLoader方法
	@Override
	public void setResourceLoader(ResourceLoader resourceLoader) {//2
		this.loader = resourceLoader;
	}

	//实现BeanNameAware 需要重写setBeanName方法
	@Override
	public void setBeanName(String name) {//3
		this.beanName = name;
	}
	
	public void outputResult(){
		System.out.println("Bean的名称为:" + beanName);
		//加载资源
		Resource resource = 
				loader.getResource("classpath:com/wisely/highlight_spring4/ch3/aware/test.txt");
		try{
			
			System.out.println("ResourceLoader加载的文件内容为: " + IOUtils.toString(resource.getInputStream()));
			
		   }catch(IOException e){
			e.printStackTrace();
		   }
	
	}

}
